1
static void (* __set_malloc_handler(void (*__f)()))()

拆开一层一层的分析,最内部的__f是一个函数指针,其参数为void,返回值为void。

对于__set_malloc_handler,首先它是一个函数,其参数为形如__f的函数指针,其返回值也是一个指针,这个指针的类型是void(*)()

用法如下:

1
2
3
void (*foo)();
void (*bar)();
foo = __set_malloc_handler(bar);

下面再来看下static void (* set_malloc_handler(void (*f)()))()的完整定义:

1
2
3
4
5
6
static void (* set_malloc_handler(void (*f)()))()
{
void (* old)() = __malloc_alloc_oom_handler;
__malloc_alloc_oom_handler = f;
return(old);
}

相信你应该能看懂了!!!